home *** CD-ROM | disk | FTP | other *** search
/ MacTech 1 to 12 / MacTech-vol-1-12.toast / Source / MacTech® Magazine / Volume 06 - 1990 / 06.06 Jun 90 / ANSI Library Code / CodeLib.h < prev    next >
Encoding:
C/C++ Source or Header  |  1990-01-19  |  1.9 KB  |  68 lines  |  [TEXT/KAHL]

  1. /***********************************************
  2.  *
  3.  *    CodeLib.
  4.  *
  5.  *    Definitions for code resource library.
  6.  *    Written by David Burggraaf, 1990.
  7.  *
  8.  ***********************************************/
  9.  
  10. #ifndef _CODE_LIB_
  11. #define _CODE_LIB_
  12. typedef enum
  13.     {
  14.     CLdispatchErr=0,
  15.     CLatoi,
  16.     CLatol,
  17.     CLsprintf,
  18.     CLsrand,
  19.     CLstrcpy,
  20.     CLsqrt=1    /*    Double/struct lib    */
  21.     } CodeLib;
  22.  
  23. #define ROUTINES     5
  24. #define FROUTINES     1
  25.  
  26. #ifndef NOCODELIBDEF
  27.  
  28. #define atoi(str) ((**idispatch)(CLatoi,(char *)(str)))
  29. #define atol(str) ((**ldispatch)(CLatol,(char *)(str)))
  30. #define sprintf(s,f) ((**idispatch)(CLsprintf,(s),(f),...))
  31. #define srand(s) ((**dispatch)(CLsrand,(unsigned)(s)))
  32. #define strcpy(s1,s2) ((char *)((**pdispatch)(CLstrcpy,(char*)(s1),(char *)(s2)))) 
  33. #define sqrt(d) ((**ddispatch)(CLsqrt, (double)(d)))
  34.  
  35. #endif
  36. typedef void (**Vfunch)(CodeLib,...);
  37. typedef int (**Ifunch)(CodeLib,...);
  38. typedef long (**Lfunch)(CodeLib,...);
  39. typedef char (**Cfunch)(CodeLib,...);
  40. typedef float (**Ffunch)(CodeLib,...);
  41. typedef double (**Dfunch)(CodeLib,...);
  42. typedef void *(**Pfunch)(CodeLib,...);
  43.  
  44. #define CODELIB Vfunch dispatch;Ifunch idispatch;Lfunch ldispatch;
  45.     Cfunch cdispatch;Ffunch fdispatch;Dfunch ddispatch;Pfunch pdispatch;
  46. #ifndef NOTLLIB
  47. #define initCodeLib() (dispatch=(Vfunch)(idispatch=(Ifunch)(ldispatch=(Lfunch)(cdispatch=(Cfunch)(pdispatch=(Pfunch)(fdispatch=(Ffunch)GetResource('LIB ', 18000)))))))
  48. #else
  49. #define initcodeLib() 1
  50. #endif
  51. #ifndef NOFLOATLIB
  52. #define initFCodeLib() (ddispatch=(Dfunch)GetResource('LIB ', 18001))
  53. #else
  54. #define initFCodeLib() 1
  55. #endif
  56. #define LOADCODELIB() {if (!initCodeLib()) return;else HLock(dispatch);if (!initFCodeLib()){HUnlock(dispatch);return;}else HLock(ddispatch);}
  57. #define UNLOADCODELIB() {HUnlock(dispatch);HUnlock(ddispatch);}
  58.  
  59. extern Vfunch dispatch;
  60. extern Ifunch idispatch;
  61. extern Lfunch ldispatch;
  62. extern Cfunch cdispatch;
  63. extern Ffunch fdispatch;
  64. extern Dfunch ddispatch;
  65. extern Pfunch pdispatch;
  66. #endif
  67.  
  68.